package com.ny.service;

import com.ny.domain.MarketingActivityDO;
import com.ny.domain.MemberDO;
import com.ny.domain.ProductPurchaseDO;
import com.ny.dto.MarketingActivityDTO;
import com.ny.dto.PageResult;
import com.ny.query.MarketingActivityQuery;
import com.ny.query.MemberQuery;
import java.lang.Boolean;
import java.lang.Integer;
import java.util.List;

/**
 * 营销工具模块
 *
 * @author MSI-NB
 * @date 2025-03-08 13:14:38
 */
public interface MarketingService {

    /**
     * 发布营销活动
     *
     * @param marketingActivityDTO 营销活动信息
     * @return
     */
    Boolean publishMarketingActivity(MarketingActivityDTO marketingActivityDTO);

    /**
     * 更新营销活动
     *
     * @param marketingActivityDTO 营销活动信息
     * @return
     */
    Boolean updateMarketingActivity(MarketingActivityDTO marketingActivityDTO);

    /**
     * 删除营销活动
     *
     * @param marketingActivityDTO 营销活动信息
     * @return
     */
    Boolean deleteMarketingActivity(MarketingActivityDTO marketingActivityDTO);

    /**
     * 查询营销活动列表
     *
     * @param marketingActivityQuery 营销活动查询条件
     * @return
     */
    PageResult<MarketingActivityDO> listMarketingActivities(MarketingActivityQuery marketingActivityQuery);

    /**
     * 获取会员消费分析
     *
     * @param memberQuery 查询条件
     * @return  购买记录的实体类
     */
    ProductPurchaseDO getMemberConsumptionAnalysis(MemberQuery memberQuery);

    /**
     * 获取所有会员消费分析
     *
     * @param memberQuery 查询条件
     * @return
     */
    List<ProductPurchaseDO> getAllMemberConsumptionAnalysis(MemberQuery memberQuery);

    /**
     * 查询会员基本信息
     *
     * @param memberQuery 查询条件
     * @return  会员信息
     */
    MemberDO getMemberInfo(MemberQuery memberQuery);

    /**
     * 查询会员消费记录
     *
     * @param memberQuery 查询条件
     * @return
     */
    List<ProductPurchaseDO> getMemberConsumptionRecord(MemberQuery memberQuery);

    /**
     * 查询会员购买记录
     *
     * @param memberQuery 查询条件
     * @return
     */
    List<ProductPurchaseDO> getMemberPurchaseRecord(MemberQuery memberQuery);

    /**
     * 查询会员等级信息
     *
     * @param memberQuery 查询条件
     * @return
     */
    Integer getMemberLevelInfo(MemberQuery memberQuery);
}
